{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GPyTorch regression with derivative information in 2d\n",
    "\n",
    "## Introduction\n",
    "In this notebook, we show how to train a GP regression model in GPyTorch of a 2-dimensional function given function values and derivative observations. We consider modeling the Franke function where the values and derivatives are contaminated with independent $\\mathcal{N}(0, 0.5)$ distributed noise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import gpytorch\n",
    "import math\n",
    "from matplotlib import cm\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Franke function\n",
    "The following is a vectorized implementation of the 2-dimensional Franke function (https://www.sfu.ca/~ssurjano/franke2d.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def franke(X, Y):\n",
    "    term1 = .75*torch.exp(-((9*X - 2).pow(2) + (9*Y - 2).pow(2))/4)\n",
    "    term2 = .75*torch.exp(-((9*X + 1).pow(2))/49 - (9*Y + 1)/10)\n",
    "    term3 = .5*torch.exp(-((9*X - 7).pow(2) + (9*Y - 3).pow(2))/4)\n",
    "    term4 = .2*torch.exp(-(9*X - 4).pow(2) - (9*Y - 7).pow(2))\n",
    "    \n",
    "    f = term1 + term2 + term3 - term4\n",
    "    dfx = -2*(9*X - 2)*9/4 * term1 - 2*(9*X + 1)*9/49 * term2 + \\\n",
    "          -2*(9*X - 7)*9/4 * term3 + 2*(9*X - 4)*9 * term4\n",
    "    dfy = -2*(9*Y - 2)*9/4 * term1 - 9/10 * term2 + \\\n",
    "          -2*(9*Y - 3)*9/4 * term3 + 2*(9*Y - 7)*9 * term4\n",
    "    \n",
    "    return f, dfx, dfy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting up the training data\n",
    "We use a grid with 100 points in $[0,1] \\times [0,1]$ with 10 uniformly distributed points per dimension."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "xv, yv = torch.meshgrid(torch.linspace(0, 1, 10), torch.linspace(0, 1, 10), indexing=\"ij\")\n",
    "train_x = torch.cat((\n",
    "    xv.contiguous().view(xv.numel(), 1), \n",
    "    yv.contiguous().view(yv.numel(), 1)),\n",
    "    dim=1\n",
    ")\n",
    "\n",
    "f, dfx, dfy = franke(train_x[:, 0], train_x[:, 1])\n",
    "train_y = torch.stack([f, dfx, dfy], -1).squeeze(1)\n",
    "\n",
    "train_y += 0.05 * torch.randn(train_y.size()) # Add noise to both values and gradients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting up the model\n",
    "A GP prior on the function values implies a multi-output GP prior on the function values and the partial derivatives, see 9.4 in http://www.gaussianprocess.org/gpml/chapters/RW9.pdf for more details. This allows using a `MultitaskMultivariateNormal` and `MultitaskGaussianLikelihood` to train a GP model from both function values and gradients. The resulting RBF kernel that models the covariance between the values and partial derivatives has been implemented in `RBFKernelGrad` and the extension of a constant mean is implemented in `ConstantMeanGrad`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "class GPModelWithDerivatives(gpytorch.models.ExactGP):\n",
    "    def __init__(self, train_x, train_y, likelihood):\n",
    "        super(GPModelWithDerivatives, self).__init__(train_x, train_y, likelihood)\n",
    "        self.mean_module = gpytorch.means.ConstantMeanGrad()\n",
    "        self.base_kernel = gpytorch.kernels.RBFKernelGrad(ard_num_dims=2)\n",
    "        self.covar_module = gpytorch.kernels.ScaleKernel(self.base_kernel)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        mean_x = self.mean_module(x)\n",
    "        covar_x = self.covar_module(x)\n",
    "        return gpytorch.distributions.MultitaskMultivariateNormal(mean_x, covar_x)\n",
    "\n",
    "likelihood = gpytorch.likelihoods.MultitaskGaussianLikelihood(num_tasks=3)  # Value + x-derivative + y-derivative\n",
    "model = GPModelWithDerivatives(train_x, train_y, likelihood)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The model training is similar to training a standard GP regression model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iter 1/100 - Loss: 128.629   lengthscales: 0.693, 0.693   noise: 0.693\n",
      "Iter 2/100 - Loss: 127.182   lengthscales: 0.668, 0.668   noise: 0.668\n",
      "Iter 3/100 - Loss: 125.838   lengthscales: 0.644, 0.645   noise: 0.644\n",
      "Iter 4/100 - Loss: 123.982   lengthscales: 0.624, 0.621   noise: 0.621\n",
      "Iter 5/100 - Loss: 122.799   lengthscales: 0.604, 0.598   noise: 0.598\n",
      "Iter 6/100 - Loss: 120.909   lengthscales: 0.583, 0.576   noise: 0.576\n",
      "Iter 7/100 - Loss: 119.255   lengthscales: 0.562, 0.555   noise: 0.554\n",
      "Iter 8/100 - Loss: 117.506   lengthscales: 0.542, 0.534   noise: 0.533\n",
      "Iter 9/100 - Loss: 116.083   lengthscales: 0.522, 0.513   noise: 0.513\n",
      "Iter 10/100 - Loss: 113.978   lengthscales: 0.502, 0.493   noise: 0.493\n",
      "Iter 11/100 - Loss: 112.242   lengthscales: 0.482, 0.474   noise: 0.473\n",
      "Iter 12/100 - Loss: 110.389   lengthscales: 0.463, 0.455   noise: 0.455\n",
      "Iter 13/100 - Loss: 108.644   lengthscales: 0.444, 0.436   noise: 0.436\n",
      "Iter 14/100 - Loss: 107.660   lengthscales: 0.426, 0.418   noise: 0.419\n",
      "Iter 15/100 - Loss: 104.480   lengthscales: 0.408, 0.402   noise: 0.401\n",
      "Iter 16/100 - Loss: 103.058   lengthscales: 0.391, 0.387   noise: 0.385\n",
      "Iter 17/100 - Loss: 101.174   lengthscales: 0.374, 0.373   noise: 0.369\n",
      "Iter 18/100 - Loss: 98.379   lengthscales: 0.358, 0.361   noise: 0.353\n",
      "Iter 19/100 - Loss: 96.482   lengthscales: 0.343, 0.352   noise: 0.338\n",
      "Iter 20/100 - Loss: 95.282   lengthscales: 0.327, 0.344   noise: 0.323\n",
      "Iter 21/100 - Loss: 92.911   lengthscales: 0.313, 0.339   noise: 0.309\n",
      "Iter 22/100 - Loss: 89.532   lengthscales: 0.300, 0.335   noise: 0.295\n",
      "Iter 23/100 - Loss: 89.324   lengthscales: 0.288, 0.332   noise: 0.282\n",
      "Iter 24/100 - Loss: 86.490   lengthscales: 0.279, 0.329   noise: 0.269\n",
      "Iter 25/100 - Loss: 85.546   lengthscales: 0.272, 0.328   noise: 0.257\n",
      "Iter 26/100 - Loss: 83.578   lengthscales: 0.268, 0.327   noise: 0.245\n",
      "Iter 27/100 - Loss: 81.732   lengthscales: 0.265, 0.326   noise: 0.234\n",
      "Iter 28/100 - Loss: 79.472   lengthscales: 0.265, 0.326   noise: 0.223\n",
      "Iter 29/100 - Loss: 77.669   lengthscales: 0.267, 0.327   noise: 0.212\n",
      "Iter 30/100 - Loss: 75.215   lengthscales: 0.269, 0.329   noise: 0.202\n",
      "Iter 31/100 - Loss: 73.676   lengthscales: 0.272, 0.329   noise: 0.193\n",
      "Iter 32/100 - Loss: 70.514   lengthscales: 0.276, 0.328   noise: 0.183\n",
      "Iter 33/100 - Loss: 69.765   lengthscales: 0.280, 0.325   noise: 0.175\n",
      "Iter 34/100 - Loss: 68.525   lengthscales: 0.284, 0.320   noise: 0.166\n",
      "Iter 35/100 - Loss: 66.181   lengthscales: 0.287, 0.314   noise: 0.158\n",
      "Iter 36/100 - Loss: 62.446   lengthscales: 0.288, 0.307   noise: 0.150\n",
      "Iter 37/100 - Loss: 62.009   lengthscales: 0.287, 0.299   noise: 0.143\n",
      "Iter 38/100 - Loss: 58.204   lengthscales: 0.284, 0.290   noise: 0.136\n",
      "Iter 39/100 - Loss: 57.167   lengthscales: 0.280, 0.281   noise: 0.130\n",
      "Iter 40/100 - Loss: 54.072   lengthscales: 0.274, 0.271   noise: 0.123\n",
      "Iter 41/100 - Loss: 51.696   lengthscales: 0.268, 0.261   noise: 0.117\n",
      "Iter 42/100 - Loss: 49.792   lengthscales: 0.261, 0.253   noise: 0.111\n",
      "Iter 43/100 - Loss: 46.250   lengthscales: 0.255, 0.246   noise: 0.106\n",
      "Iter 44/100 - Loss: 47.110   lengthscales: 0.250, 0.241   noise: 0.101\n",
      "Iter 45/100 - Loss: 45.541   lengthscales: 0.248, 0.237   noise: 0.096\n",
      "Iter 46/100 - Loss: 41.711   lengthscales: 0.246, 0.237   noise: 0.091\n",
      "Iter 47/100 - Loss: 40.852   lengthscales: 0.245, 0.237   noise: 0.086\n",
      "Iter 48/100 - Loss: 39.588   lengthscales: 0.244, 0.239   noise: 0.082\n",
      "Iter 49/100 - Loss: 36.817   lengthscales: 0.244, 0.241   noise: 0.078\n",
      "Iter 50/100 - Loss: 34.773   lengthscales: 0.244, 0.244   noise: 0.074\n",
      "Iter 51/100 - Loss: 31.050   lengthscales: 0.243, 0.247   noise: 0.070\n",
      "Iter 52/100 - Loss: 28.448   lengthscales: 0.242, 0.248   noise: 0.067\n",
      "Iter 53/100 - Loss: 29.796   lengthscales: 0.241, 0.246   noise: 0.063\n",
      "Iter 54/100 - Loss: 25.501   lengthscales: 0.239, 0.243   noise: 0.060\n",
      "Iter 55/100 - Loss: 28.542   lengthscales: 0.237, 0.238   noise: 0.057\n",
      "Iter 56/100 - Loss: 23.089   lengthscales: 0.236, 0.231   noise: 0.054\n",
      "Iter 57/100 - Loss: 19.792   lengthscales: 0.235, 0.225   noise: 0.051\n",
      "Iter 58/100 - Loss: 20.285   lengthscales: 0.235, 0.219   noise: 0.049\n",
      "Iter 59/100 - Loss: 16.047   lengthscales: 0.234, 0.214   noise: 0.046\n",
      "Iter 60/100 - Loss: 15.160   lengthscales: 0.234, 0.211   noise: 0.044\n",
      "Iter 61/100 - Loss: 13.038   lengthscales: 0.232, 0.209   noise: 0.042\n",
      "Iter 62/100 - Loss: 13.928   lengthscales: 0.230, 0.209   noise: 0.040\n",
      "Iter 63/100 - Loss: 9.312   lengthscales: 0.227, 0.210   noise: 0.038\n",
      "Iter 64/100 - Loss: 7.950   lengthscales: 0.223, 0.212   noise: 0.036\n",
      "Iter 65/100 - Loss: 3.461   lengthscales: 0.220, 0.215   noise: 0.034\n",
      "Iter 66/100 - Loss: 5.609   lengthscales: 0.217, 0.217   noise: 0.033\n",
      "Iter 67/100 - Loss: 2.204   lengthscales: 0.214, 0.218   noise: 0.031\n",
      "Iter 68/100 - Loss: 0.597   lengthscales: 0.212, 0.219   noise: 0.029\n",
      "Iter 69/100 - Loss: -1.111   lengthscales: 0.211, 0.217   noise: 0.028\n",
      "Iter 70/100 - Loss: -2.389   lengthscales: 0.209, 0.214   noise: 0.027\n",
      "Iter 71/100 - Loss: -3.256   lengthscales: 0.208, 0.210   noise: 0.025\n",
      "Iter 72/100 - Loss: -4.180   lengthscales: 0.209, 0.207   noise: 0.024\n",
      "Iter 73/100 - Loss: -6.345   lengthscales: 0.209, 0.205   noise: 0.023\n",
      "Iter 74/100 - Loss: -10.216   lengthscales: 0.210, 0.204   noise: 0.022\n",
      "Iter 75/100 - Loss: -11.749   lengthscales: 0.209, 0.204   noise: 0.021\n",
      "Iter 76/100 - Loss: -10.651   lengthscales: 0.208, 0.204   noise: 0.020\n",
      "Iter 77/100 - Loss: -12.092   lengthscales: 0.207, 0.205   noise: 0.019\n",
      "Iter 78/100 - Loss: -14.908   lengthscales: 0.204, 0.206   noise: 0.018\n",
      "Iter 79/100 - Loss: -16.482   lengthscales: 0.202, 0.208   noise: 0.017\n",
      "Iter 80/100 - Loss: -17.962   lengthscales: 0.199, 0.207   noise: 0.016\n",
      "Iter 81/100 - Loss: -23.044   lengthscales: 0.198, 0.207   noise: 0.016\n",
      "Iter 82/100 - Loss: -20.867   lengthscales: 0.196, 0.205   noise: 0.015\n",
      "Iter 83/100 - Loss: -20.908   lengthscales: 0.195, 0.203   noise: 0.014\n",
      "Iter 84/100 - Loss: -25.210   lengthscales: 0.193, 0.201   noise: 0.013\n",
      "Iter 85/100 - Loss: -24.521   lengthscales: 0.193, 0.199   noise: 0.013\n",
      "Iter 86/100 - Loss: -25.571   lengthscales: 0.193, 0.199   noise: 0.012\n",
      "Iter 87/100 - Loss: -26.477   lengthscales: 0.194, 0.199   noise: 0.012\n",
      "Iter 88/100 - Loss: -26.940   lengthscales: 0.195, 0.200   noise: 0.011\n",
      "Iter 89/100 - Loss: -27.446   lengthscales: 0.196, 0.199   noise: 0.011\n",
      "Iter 90/100 - Loss: -30.484   lengthscales: 0.196, 0.198   noise: 0.010\n",
      "Iter 91/100 - Loss: -29.450   lengthscales: 0.194, 0.196   noise: 0.010\n",
      "Iter 92/100 - Loss: -28.761   lengthscales: 0.192, 0.198   noise: 0.009\n",
      "Iter 93/100 - Loss: -34.818   lengthscales: 0.189, 0.200   noise: 0.009\n",
      "Iter 94/100 - Loss: -39.531   lengthscales: 0.186, 0.203   noise: 0.009\n",
      "Iter 95/100 - Loss: -38.291   lengthscales: 0.184, 0.202   noise: 0.008\n",
      "Iter 96/100 - Loss: -38.961   lengthscales: 0.182, 0.200   noise: 0.008\n",
      "Iter 97/100 - Loss: -41.103   lengthscales: 0.180, 0.197   noise: 0.007\n",
      "Iter 98/100 - Loss: -42.563   lengthscales: 0.179, 0.194   noise: 0.007\n",
      "Iter 99/100 - Loss: -42.571   lengthscales: 0.179, 0.191   noise: 0.007\n",
      "Iter 100/100 - Loss: -37.692   lengthscales: 0.179, 0.191   noise: 0.007\n"
     ]
    }
   ],
   "source": [
    "# this is for running the notebook in our testing framework\n",
    "import os\n",
    "smoke_test = ('CI' in os.environ)\n",
    "training_iter = 2 if smoke_test else 50\n",
    "\n",
    "\n",
    "# Find optimal model hyperparameters\n",
    "model.train()\n",
    "likelihood.train()\n",
    "\n",
    "# Use the adam optimizer\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.05)  # Includes GaussianLikelihood parameters\n",
    "\n",
    "# \"Loss\" for GPs - the marginal log likelihood\n",
    "mll = gpytorch.mlls.ExactMarginalLogLikelihood(likelihood, model)\n",
    "\n",
    "for i in range(training_iter):\n",
    "    optimizer.zero_grad()\n",
    "    output = model(train_x)\n",
    "    loss = -mll(output, train_y)\n",
    "    loss.backward()\n",
    "    print(\"Iter %d/%d - Loss: %.3f   lengthscales: %.3f, %.3f   noise: %.3f\" % (\n",
    "        i + 1, training_iter, loss.item(),\n",
    "        model.covar_module.base_kernel.lengthscale.squeeze()[0],\n",
    "        model.covar_module.base_kernel.lengthscale.squeeze()[1],\n",
    "        model.likelihood.noise.item()\n",
    "    ))\n",
    "    optimizer.step()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Model predictions are also similar to GP regression with only function values, but we need more CG iterations to get accurate estimates of the predictive variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x720 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Set into eval mode\n",
    "model.eval()\n",
    "likelihood.eval()\n",
    "\n",
    "# Initialize plots\n",
    "fig, ax = plt.subplots(2, 3, figsize=(14, 10))\n",
    "\n",
    "# Test points\n",
    "n1, n2 = 50, 50\n",
    "xv, yv = torch.meshgrid(torch.linspace(0, 1, n1), torch.linspace(0, 1, n2), indexing=\"ij\")\n",
    "f, dfx, dfy = franke(xv, yv)\n",
    "\n",
    "# Make predictions\n",
    "with torch.no_grad(), gpytorch.settings.fast_computations(log_prob=False, covar_root_decomposition=False):\n",
    "    test_x = torch.stack([xv.reshape(n1*n2, 1), yv.reshape(n1*n2, 1)], -1).squeeze(1)\n",
    "    predictions = likelihood(model(test_x))\n",
    "    mean = predictions.mean\n",
    "\n",
    "extent = (xv.min(), xv.max(), yv.max(), yv.min())\n",
    "ax[0, 0].imshow(f, extent=extent, cmap=cm.jet)\n",
    "ax[0, 0].set_title('True values')\n",
    "ax[0, 1].imshow(dfx, extent=extent, cmap=cm.jet)\n",
    "ax[0, 1].set_title('True x-derivatives')\n",
    "ax[0, 2].imshow(dfy, extent=extent, cmap=cm.jet)\n",
    "ax[0, 2].set_title('True y-derivatives')\n",
    "\n",
    "ax[1, 0].imshow(mean[:, 0].detach().numpy().reshape(n1, n2), extent=extent, cmap=cm.jet)\n",
    "ax[1, 0].set_title('Predicted values')\n",
    "ax[1, 1].imshow(mean[:, 1].detach().numpy().reshape(n1, n2), extent=extent, cmap=cm.jet)\n",
    "ax[1, 1].set_title('Predicted x-derivatives')\n",
    "ax[1, 2].imshow(mean[:, 2].detach().numpy().reshape(n1, n2), extent=extent, cmap=cm.jet)\n",
    "ax[1, 2].set_title('Predicted y-derivatives')\n",
    "\n",
    "None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
